{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ResnetTrick_s256bs32\n",
    "\n",
    "> size 256 bs 32"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# setup and imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install git+https://github.com/ayasyrev/model_constructor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# pip install git+https://github.com/kornia/kornia"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from kornia.contrib import MaxBlurPool2d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from fastai.basic_train import *\n",
    "from fastai.vision import *\n",
    "from fastai.script import *\n",
    "from model_constructor.net import *\n",
    "from model_constructor.layers import SimpleSelfAttention, ConvLayer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Ranger deep learning optimizer - RAdam + Lookahead combined.\n",
    "  #https://github.com/lessw2020/Ranger-Deep-Learning-Optimizer\n",
    "\n",
    "  #Ranger has now been used to capture 12 records on the FastAI leaderboard.\n",
    "\n",
    "  #This version = 9.3.19  \n",
    "\n",
    "  #Credits:\n",
    "  #RAdam -->  https://github.com/LiyuanLucasLiu/RAdam\n",
    "  #Lookahead --> rewritten by lessw2020, but big thanks to Github @LonePatient and @RWightman for ideas from their code.\n",
    "  #Lookahead paper --> MZhang,G Hinton  https://arxiv.org/abs/1907.08610\n",
    "\n",
    "  #summary of changes: \n",
    "  #full code integration with all updates at param level instead of group, moves slow weights into state dict (from generic weights), \n",
    "  #supports group learning rates (thanks @SHolderbach), fixes sporadic load from saved model issues.\n",
    "  #changes 8/31/19 - fix references to *self*.N_sma_threshold; \n",
    "                  #changed eps to 1e-5 as better default than 1e-8.\n",
    "\n",
    "import math\n",
    "import torch\n",
    "from torch.optim.optimizer import Optimizer, required\n",
    "import itertools as it"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# utils"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Mish(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__()\n",
    "        print(\"Mish activation loaded...\")\n",
    "\n",
    "    def forward(self, x):  \n",
    "        #save 1 second per epoch with no x= x*() and then return x...just inline it.\n",
    "        return x *( torch.tanh(F.softplus(x))) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "class Ranger(Optimizer):\n",
    "\n",
    "    def __init__(self, params, lr=1e-3, alpha=0.5, k=6, N_sma_threshhold=5, betas=(.95,0.999), eps=1e-5, weight_decay=0):\n",
    "        #parameter checks\n",
    "        if not 0.0 <= alpha <= 1.0:\n",
    "            raise ValueError(f'Invalid slow update rate: {alpha}')\n",
    "        if not 1 <= k:\n",
    "            raise ValueError(f'Invalid lookahead steps: {k}')\n",
    "        if not lr > 0:\n",
    "            raise ValueError(f'Invalid Learning Rate: {lr}')\n",
    "        if not eps > 0:\n",
    "            raise ValueError(f'Invalid eps: {eps}')\n",
    "\n",
    "        #parameter comments:\n",
    "        # beta1 (momentum) of .95 seems to work better than .90...\n",
    "        #N_sma_threshold of 5 seems better in testing than 4.\n",
    "        #In both cases, worth testing on your dataset (.90 vs .95, 4 vs 5) to make sure which works best for you.\n",
    "\n",
    "        #prep defaults and init torch.optim base\n",
    "        defaults = dict(lr=lr, alpha=alpha, k=k, step_counter=0, betas=betas, N_sma_threshhold=N_sma_threshhold, eps=eps, weight_decay=weight_decay)\n",
    "        super().__init__(params,defaults)\n",
    "\n",
    "        #adjustable threshold\n",
    "        self.N_sma_threshhold = N_sma_threshhold\n",
    "\n",
    "        #now we can get to work...\n",
    "        #removed as we now use step from RAdam...no need for duplicate step counting\n",
    "        #for group in self.param_groups:\n",
    "        #    group[\"step_counter\"] = 0\n",
    "            #print(\"group step counter init\")\n",
    "\n",
    "        #look ahead params\n",
    "        self.alpha = alpha\n",
    "        self.k = k \n",
    "\n",
    "        #radam buffer for state\n",
    "        self.radam_buffer = [[None,None,None] for ind in range(10)]\n",
    "\n",
    "        #self.first_run_check=0\n",
    "\n",
    "        #lookahead weights\n",
    "        #9/2/19 - lookahead param tensors have been moved to state storage.  \n",
    "        #This should resolve issues with load/save where weights were left in GPU memory from first load, slowing down future runs.\n",
    "\n",
    "        #self.slow_weights = [[p.clone().detach() for p in group['params']]\n",
    "        #                     for group in self.param_groups]\n",
    "\n",
    "        #don't use grad for lookahead weights\n",
    "        #for w in it.chain(*self.slow_weights):\n",
    "        #    w.requires_grad = False\n",
    "\n",
    "    def __setstate__(self, state):\n",
    "        print(\"set state called\")\n",
    "        super(Ranger, self).__setstate__(state)\n",
    "\n",
    "\n",
    "    def step(self, closure=None):\n",
    "        loss = None\n",
    "        #note - below is commented out b/c I have other work that passes back the loss as a float, and thus not a callable closure.  \n",
    "        #Uncomment if you need to use the actual closure...\n",
    "\n",
    "        #if closure is not None:\n",
    "            #loss = closure()\n",
    "\n",
    "        #Evaluate averages and grad, update param tensors\n",
    "        for group in self.param_groups:\n",
    "\n",
    "            for p in group['params']:\n",
    "                if p.grad is None:\n",
    "                    continue\n",
    "                grad = p.grad.data.float()\n",
    "                if grad.is_sparse:\n",
    "                    raise RuntimeError('Ranger optimizer does not support sparse gradients')\n",
    "\n",
    "                p_data_fp32 = p.data.float()\n",
    "\n",
    "                state = self.state[p]  #get state dict for this param\n",
    "\n",
    "                if len(state) == 0:   #if first time to run...init dictionary with our desired entries\n",
    "                    #if self.first_run_check==0:\n",
    "                        #self.first_run_check=1\n",
    "                        #print(\"Initializing slow buffer...should not see this at load from saved model!\")\n",
    "                    state['step'] = 0\n",
    "                    state['exp_avg'] = torch.zeros_like(p_data_fp32)\n",
    "                    state['exp_avg_sq'] = torch.zeros_like(p_data_fp32)\n",
    "\n",
    "                    #look ahead weight storage now in state dict \n",
    "                    state['slow_buffer'] = torch.empty_like(p.data)\n",
    "                    state['slow_buffer'].copy_(p.data)\n",
    "\n",
    "                else:\n",
    "                    state['exp_avg'] = state['exp_avg'].type_as(p_data_fp32)\n",
    "                    state['exp_avg_sq'] = state['exp_avg_sq'].type_as(p_data_fp32)\n",
    "\n",
    "                #begin computations \n",
    "                exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq']\n",
    "                beta1, beta2 = group['betas']\n",
    "\n",
    "                #compute variance mov avg\n",
    "                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n",
    "                #compute mean moving avg\n",
    "                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n",
    "\n",
    "                state['step'] += 1\n",
    "\n",
    "\n",
    "                buffered = self.radam_buffer[int(state['step'] % 10)]\n",
    "                if state['step'] == buffered[0]:\n",
    "                    N_sma, step_size = buffered[1], buffered[2]\n",
    "                else:\n",
    "                    buffered[0] = state['step']\n",
    "                    beta2_t = beta2 ** state['step']\n",
    "                    N_sma_max = 2 / (1 - beta2) - 1\n",
    "                    N_sma = N_sma_max - 2 * state['step'] * beta2_t / (1 - beta2_t)\n",
    "                    buffered[1] = N_sma\n",
    "                    if N_sma > self.N_sma_threshhold:\n",
    "                        step_size = math.sqrt((1 - beta2_t) * (N_sma - 4) / (N_sma_max - 4) * (N_sma - 2) / N_sma * N_sma_max / (N_sma_max - 2)) / (1 - beta1 ** state['step'])\n",
    "                    else:\n",
    "                        step_size = 1.0 / (1 - beta1 ** state['step'])\n",
    "                    buffered[2] = step_size\n",
    "\n",
    "                if group['weight_decay'] != 0:\n",
    "                    p_data_fp32.add_(-group['weight_decay'] * group['lr'], p_data_fp32)\n",
    "\n",
    "                if N_sma > self.N_sma_threshhold:\n",
    "                    denom = exp_avg_sq.sqrt().add_(group['eps'])\n",
    "                    p_data_fp32.addcdiv_(-step_size * group['lr'], exp_avg, denom)\n",
    "                else:\n",
    "                    p_data_fp32.add_(-step_size * group['lr'], exp_avg)\n",
    "\n",
    "                p.data.copy_(p_data_fp32)\n",
    "\n",
    "                #integrated look ahead...\n",
    "                #we do it at the param level instead of group level\n",
    "                if state['step'] % group['k'] == 0:\n",
    "                    slow_p = state['slow_buffer'] #get access to slow param tensor\n",
    "                    slow_p.add_(self.alpha, p.data - slow_p)  #(fast weights - slow weights) * alpha\n",
    "                    p.data.copy_(slow_p)  #copy interpolated weights to RAdam param tensor\n",
    "\n",
    "        return loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_data(size=128, woof=1, bs=64, workers=None, **kwargs):\n",
    "    if woof:\n",
    "        path = URLs.IMAGEWOOF    # if woof \n",
    "    else:\n",
    "        path = URLs.IMAGENETTE\n",
    "    path = untar_data(path)\n",
    "    print('data path  ', path)\n",
    "    n_gpus = num_distrib() or 1\n",
    "    if workers is None: workers = min(8, num_cpus()//n_gpus)\n",
    "    return (ImageList.from_folder(path).split_by_folder(valid='val')\n",
    "            .label_from_folder().transform(([flip_lr(p=0.5)], []), size=size)\n",
    "            .databunch(bs=bs, num_workers=workers)\n",
    "            .presize(size, scale=(0.35,1))\n",
    "            .normalize(imagenet_stats))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_learn(\n",
    "        gpu:Param(\"GPU to run on\", str)=None,\n",
    "        woof: Param(\"Use imagewoof (otherwise imagenette)\", int)=1,\n",
    "        size: Param(\"Size (px: 128,192,224)\", int)=128,\n",
    "        alpha: Param(\"Alpha\", float)=0.99, \n",
    "        mom: Param(\"Momentum\", float)=0.95, #? 0.9\n",
    "        eps: Param(\"epsilon\", float)=1e-6,\n",
    "        bs: Param(\"Batch size\", int)=64,\n",
    "        mixup: Param(\"Mixup\", float)=0.,\n",
    "        opt: Param(\"Optimizer (adam,rms,sgd)\", str)='ranger',\n",
    "        sa: Param(\"Self-attention\", int)=0,\n",
    "        sym: Param(\"Symmetry for self-attention\", int)=0,\n",
    "        model: Param('model as partial', callable) = xresnet50\n",
    "        ):\n",
    " \n",
    "    if   opt=='adam' : opt_func = partial(optim.Adam, betas=(mom,alpha), eps=eps)\n",
    "    elif opt=='ranger'  : opt_func = partial(Ranger,  betas=(mom,alpha), eps=eps)\n",
    "    data = get_data(size, woof, bs)\n",
    "    learn = (Learner(data, model(), wd=1e-2, opt_func=opt_func,\n",
    "             metrics=[accuracy,top_k_accuracy],\n",
    "             bn_wd=False, true_wd=True,\n",
    "             loss_func = LabelSmoothingCrossEntropy(),))\n",
    "    print('Learn path', learn.path)\n",
    "    if mixup: learn = learn.mixup(alpha=mixup)\n",
    "    return learn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot(learn):\n",
    "    learn.recorder.plot_losses()\n",
    "    learn.recorder.plot_metrics()\n",
    "    learn.recorder.plot_lr(show_moms=True)\n",
    "Learner.plot = plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "lr = 0.004\n",
    "epochs = 5\n",
    "moms = (0.95,0.95)\n",
    "start_pct = 0.72\n",
    "size=256\n",
    "bs=32"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ResBlock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NewResBlock(Module):\n",
    "    def __init__(self, expansion, ni, nh, stride=1, \n",
    "                 conv_layer=ConvLayer, act_fn=act_fn, bn_1st=True,\n",
    "                 pool=nn.AvgPool2d(2, ceil_mode=True), sa=False,sym=False, zero_bn=True):\n",
    "        nf,ni = nh*expansion,ni*expansion\n",
    "        self.reduce = noop if stride==1 else pool\n",
    "        layers  = [(f\"conv_0\", conv_layer(ni, nh, 3, stride=stride, act_fn=act_fn, bn_1st=bn_1st)),\n",
    "                   (f\"conv_1\", conv_layer(nh, nf, 3, zero_bn=zero_bn, act=False, bn_1st=bn_1st))\n",
    "        ] if expansion == 1 else [\n",
    "                   (f\"conv_0\",conv_layer(ni, nh, 1, act_fn=act_fn, bn_1st=bn_1st)),\n",
    "                   (f\"conv_1\",conv_layer(nh, nh, 3, stride=1, act_fn=act_fn, bn_1st=bn_1st)), #!!!\n",
    "                   (f\"conv_2\",conv_layer(nh, nf, 1, zero_bn=zero_bn, act=False, bn_1st=bn_1st))\n",
    "        ]\n",
    "        if sa: layers.append(('sa', SimpleSelfAttention(nf,ks=1,sym=sym)))\n",
    "        self.convs = nn.Sequential(OrderedDict(layers))\n",
    "        self.idconv = noop if ni==nf else conv_layer(ni, nf, 1, act=False)\n",
    "        self.merge =act_fn\n",
    "\n",
    "    def forward(self, x): \n",
    "        o = self.reduce(x)\n",
    "        return self.merge(self.convs(o) + self.idconv(o))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Constructor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = xresnet50(c_out=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.block = NewResBlock"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "pool = MaxBlurPool2d(3, True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.pool = pool\n",
    "model.stem_pool = pool"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mish activation loaded...\n"
     ]
    }
   ],
   "source": [
    "# model.stem_sizes = [3,32,32,64]\n",
    "model.stem_sizes = [3,32,64,64]\n",
    "\n",
    "model.act_fn= Mish()\n",
    "model.sa = True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## repr model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  model xresnet50\n",
       "  (stem): Sequential(\n",
       "    (conv_0): ConvLayer(\n",
       "      (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (conv_1): ConvLayer(\n",
       "      (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (conv_2): ConvLayer(\n",
       "      (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (act_fn): Mish()\n",
       "    )\n",
       "    (stem_pool): MaxBlurPool2d()\n",
       "  )\n",
       "  (body): Sequential(\n",
       "    (l_0): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "          (sa): SimpleSelfAttention(\n",
       "            (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_1): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_3): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_2): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_3): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_4): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_5): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "    (l_3): Sequential(\n",
       "      (bl_0): NewResBlock(\n",
       "        (reduce): MaxBlurPool2d()\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (idconv): ConvLayer(\n",
       "          (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_1): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "      (bl_2): NewResBlock(\n",
       "        (convs): Sequential(\n",
       "          (conv_0): ConvLayer(\n",
       "            (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_1): ConvLayer(\n",
       "            (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (act_fn): Mish()\n",
       "          )\n",
       "          (conv_2): ConvLayer(\n",
       "            (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "            (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          )\n",
       "        )\n",
       "        (merge): Mish()\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (head): Sequential(\n",
       "    (pool): AdaptiveAvgPool2d(output_size=1)\n",
       "    (flat): Flatten()\n",
       "    (fc): Linear(in_features=2048, out_features=10, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (conv_0): ConvLayer(\n",
       "    (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (conv_1): ConvLayer(\n",
       "    (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (conv_2): ConvLayer(\n",
       "    (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (act_fn): Mish()\n",
       "  )\n",
       "  (stem_pool): MaxBlurPool2d()\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.stem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (l_0): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "        (sa): SimpleSelfAttention(\n",
       "          (conv): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_1): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_3): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_2): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_3): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_4): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_5): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       "  (l_3): Sequential(\n",
       "    (bl_0): NewResBlock(\n",
       "      (reduce): MaxBlurPool2d()\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (idconv): ConvLayer(\n",
       "        (conv): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_1): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "    (bl_2): NewResBlock(\n",
       "      (convs): Sequential(\n",
       "        (conv_0): ConvLayer(\n",
       "          (conv): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_1): ConvLayer(\n",
       "          (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (act_fn): Mish()\n",
       "        )\n",
       "        (conv_2): ConvLayer(\n",
       "          (conv): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        )\n",
       "      )\n",
       "      (merge): Mish()\n",
       "    )\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.body"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (pool): AdaptiveAvgPool2d(output_size=1)\n",
       "  (flat): Flatten()\n",
       "  (fc): Linear(in_features=2048, out_features=10, bias=True)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.head"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Lr find"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading https://s3.amazonaws.com/fast-ai-imageclas/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div>\n",
       "        <style>\n",
       "            /* Turns off some styling */\n",
       "            progress {\n",
       "                /* gets rid of default border in Firefox and Opera. */\n",
       "                border: none;\n",
       "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "                background-size: auto;\n",
       "            }\n",
       "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "                background: #F44336;\n",
       "            }\n",
       "        </style>\n",
       "      <progress value='0' class='' max='1', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      0.00% [0/1 00:00<00:00]\n",
       "    </div>\n",
       "    \n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table><p>\n",
       "\n",
       "    <div>\n",
       "        <style>\n",
       "            /* Turns off some styling */\n",
       "            progress {\n",
       "                /* gets rid of default border in Firefox and Opera. */\n",
       "                border: none;\n",
       "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
       "                background-size: auto;\n",
       "            }\n",
       "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
       "                background: #F44336;\n",
       "            }\n",
       "        </style>\n",
       "      <progress value='93' class='' max='282', style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
       "      32.98% [93/282 00:59<02:00 9.0370]\n",
       "    </div>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "set state called\n",
      "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
     ]
    }
   ],
   "source": [
    "learn.lr_find()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nOd8dt1hOVvQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# epochs 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.846565</td>\n",
       "      <td>1.740198</td>\n",
       "      <td>0.455841</td>\n",
       "      <td>0.875286</td>\n",
       "      <td>03:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.604861</td>\n",
       "      <td>1.465363</td>\n",
       "      <td>0.586918</td>\n",
       "      <td>0.941970</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.468591</td>\n",
       "      <td>1.387545</td>\n",
       "      <td>0.615678</td>\n",
       "      <td>0.960804</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.296075</td>\n",
       "      <td>1.243947</td>\n",
       "      <td>0.696360</td>\n",
       "      <td>0.961568</td>\n",
       "      <td>03:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.117819</td>\n",
       "      <td>1.047864</td>\n",
       "      <td>0.783151</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.881062</td>\n",
       "      <td>1.775142</td>\n",
       "      <td>0.428608</td>\n",
       "      <td>0.876304</td>\n",
       "      <td>03:44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.620164</td>\n",
       "      <td>1.537998</td>\n",
       "      <td>0.545686</td>\n",
       "      <td>0.930262</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.460641</td>\n",
       "      <td>1.373050</td>\n",
       "      <td>0.621278</td>\n",
       "      <td>0.950369</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.322988</td>\n",
       "      <td>1.288435</td>\n",
       "      <td>0.691016</td>\n",
       "      <td>0.951133</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.117089</td>\n",
       "      <td>1.051930</td>\n",
       "      <td>0.788496</td>\n",
       "      <td>0.978621</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.805533</td>\n",
       "      <td>1.703204</td>\n",
       "      <td>0.470603</td>\n",
       "      <td>0.904301</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.625328</td>\n",
       "      <td>1.511117</td>\n",
       "      <td>0.566047</td>\n",
       "      <td>0.933316</td>\n",
       "      <td>03:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.468098</td>\n",
       "      <td>1.322821</td>\n",
       "      <td>0.655129</td>\n",
       "      <td>0.954950</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.321026</td>\n",
       "      <td>1.230928</td>\n",
       "      <td>0.703741</td>\n",
       "      <td>0.969712</td>\n",
       "      <td>03:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.106141</td>\n",
       "      <td>1.046060</td>\n",
       "      <td>0.793586</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>03:42</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# e5 results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = np.array([0.783151,0.788496, 0.793586])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.788411, 0.004260494885182538)"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.mean(), acc.std()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# epochs 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "epochs = 20"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading https://s3.amazonaws.com/fast-ai-imageclas/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.905193</td>\n",
       "      <td>1.783443</td>\n",
       "      <td>0.435734</td>\n",
       "      <td>0.887758</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.650452</td>\n",
       "      <td>1.547693</td>\n",
       "      <td>0.546449</td>\n",
       "      <td>0.935607</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.465786</td>\n",
       "      <td>1.385941</td>\n",
       "      <td>0.635785</td>\n",
       "      <td>0.953932</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.342103</td>\n",
       "      <td>1.277800</td>\n",
       "      <td>0.682362</td>\n",
       "      <td>0.964368</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.262854</td>\n",
       "      <td>1.203113</td>\n",
       "      <td>0.719776</td>\n",
       "      <td>0.965131</td>\n",
       "      <td>02:39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.182428</td>\n",
       "      <td>1.132482</td>\n",
       "      <td>0.743701</td>\n",
       "      <td>0.972767</td>\n",
       "      <td>02:40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.117392</td>\n",
       "      <td>1.074303</td>\n",
       "      <td>0.776024</td>\n",
       "      <td>0.978366</td>\n",
       "      <td>02:40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.088367</td>\n",
       "      <td>1.073109</td>\n",
       "      <td>0.771698</td>\n",
       "      <td>0.977093</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.026587</td>\n",
       "      <td>0.998186</td>\n",
       "      <td>0.812420</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.996867</td>\n",
       "      <td>1.064189</td>\n",
       "      <td>0.776279</td>\n",
       "      <td>0.971240</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.965731</td>\n",
       "      <td>0.953787</td>\n",
       "      <td>0.826164</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.963531</td>\n",
       "      <td>0.957308</td>\n",
       "      <td>0.826164</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.912084</td>\n",
       "      <td>0.963323</td>\n",
       "      <td>0.822856</td>\n",
       "      <td>0.981675</td>\n",
       "      <td>02:40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.899288</td>\n",
       "      <td>0.939585</td>\n",
       "      <td>0.839654</td>\n",
       "      <td>0.982947</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.873396</td>\n",
       "      <td>0.916069</td>\n",
       "      <td>0.844744</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.840142</td>\n",
       "      <td>0.910450</td>\n",
       "      <td>0.845508</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.775728</td>\n",
       "      <td>0.877730</td>\n",
       "      <td>0.860779</td>\n",
       "      <td>0.985492</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.722078</td>\n",
       "      <td>0.829264</td>\n",
       "      <td>0.881140</td>\n",
       "      <td>0.988038</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.682016</td>\n",
       "      <td>0.817388</td>\n",
       "      <td>0.886231</td>\n",
       "      <td>0.987020</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.658269</td>\n",
       "      <td>0.813186</td>\n",
       "      <td>0.887503</td>\n",
       "      <td>0.988292</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEICAYAAABF82P+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd3hUVfrA8e+bkEYSWgiIlASU3kNo\nilSluYqVBQt21F3L6k93wa6oy66uuq6uHV1dBbG7AgIKiigtoffekYQgNYS09/fHvRkmZAIhyWRS\n3s/zzDN3zj33znvDMO/cc+85R1QVY4wx5mRBgQ7AGGNM+WQJwhhjjE+WIIwxxvhkCcIYY4xPliCM\nMcb4ZAnCGGOMT35LECLSWERmi8hqEVklIvf6qNNXRA6KyFL38ZjXusEisk5ENorIGH/FaYwxxrdq\nftx3NvB/qrpYRKKBZBGZqaqrT6r3k6r+zrtARIKBV4GLgJ3AIhH52se2+dStW1fj4+NL7wiMMaaS\nS05O3qeqsb7W+S1BqOoeYI+7fFhE1gANgVN+ybu6ARtVdTOAiEwChp1u2/j4eJKSkkoUtzHGVCUi\nsq2wdWVyDUJE4oHOwAIfq3uKyDIRmSYibd2yhsAOrzo73TJf+x4tIkkikpSamlqKURtjTNXm9wQh\nIlHAZ8CfVPXQSasXA3Gq2hH4F/Dlme5fVd9U1URVTYyN9XmWZIwxphj8miBEJAQnOXyoqp+fvF5V\nD6nqEXd5KhAiInWBXUBjr6qN3DJjjDFlxG/XIEREgHeANar6QiF1zgL2qqqKSDechJUGHACai0hT\nnMQwArjGX7EaY8qXrKwsdu7cSUZGRqBDqTTCw8Np1KgRISEhRd7Gn3cxnQ9cD6wQkaVu2UNAEwBV\nfR24CrhTRLKBY8AIdYaXzRaRu4DpQDAwQVVX+TFWY0w5snPnTqKjo4mPj8f5rWlKQlVJS0tj586d\nNG3atMjb+fMuprnAKf9lVfUV4JVC1k0FpvohNGNMOZeRkWHJoRSJCDExMZzpjTzWk9oYUy5Zcihd\nxfl7WoJwfbV0FwfTswIdhjHGlBuWIID//LKVeyctZcRb8wMdijGmHEhLS6NTp0506tSJs846i4YN\nG3peZ2ZmFmkfN910E+vWrfNzpP7lz4vUFcY7c7cAsGbPyd00jDFVUUxMDEuXOvfWPPHEE0RFRfHA\nAw/kq6OqqCpBQb5/Z7/77rt+j9Pf7AwCOO+cGACiwy1fGmMKt3HjRtq0acO1115L27Zt2bNnD6NH\njyYxMZG2bdvy1FNPeer26tWLpUuXkp2dTa1atRgzZgwdO3akZ8+epKSkBPAois6+EYG2DWvCoh0c\nzsgOdCjGmJM8+b9VrN5dumf3bc6uweOXtD19RR/Wrl3L+++/T2JiIgDjx4+nTp06ZGdn069fP666\n6iratGmTb5uDBw/Sp08fxo8fz/3338+ECRMYM6b8D1Jd5c8gcnKVR79cGegwjDEVxDnnnONJDgAT\nJ04kISGBhIQE1qxZw+rVBccUjYiIYMiQIQB06dKFrVu3llW4JVLlzyCCg/Lf+nUsM4eI0OAARWOM\nOVlxf+n7S2RkpGd5w4YN/POf/2ThwoXUqlWL6667zmfv79DQUM9ycHAw2dkVo7Wiyp9BnCzlsHXt\nN8YUzaFDh4iOjqZGjRrs2bOH6dOnBzqkUlXlzyBOdvR4TqBDMMZUEAkJCbRp04ZWrVoRFxfH+eef\nH+iQSpU4Qx9VDomJiVqcCYPix0zxLE8a3YMezWJKMyxjzBlas2YNrVu3DnQYlY6vv6uIJKtqoq/6\n1sQErB03mDeu7wLAHf9NDnA0xhhTPliCAMJDgqkV4QyBe8CG2zDGGMAShEeTmOqBDsEYY8oVSxCu\nBjUjuKpLI2pGFH0yDWOMqcwsQXhpFhvJwWNZHD1eMe5RNsYYf7IE4aVBzXAA9h6yvhDGGGMJwku9\n6LwEcTzAkRhjAqlfv34FOr299NJL3HnnnYVuExUVBcDu3bu56qqrfNbp27cvp7sV/6WXXiI9Pd3z\neujQoRw4cKCooZcqSxBe6tcIA6w3tTFV3ciRI5k0aVK+skmTJjFy5MjTbnv22Wfz6aefFvu9T04Q\nU6dOpVatWsXeX0n4LUGISGMRmS0iq0VklYjc66POtSKyXERWiMgvItLRa91Wt3ypiJx577diiHXP\nIFLsDMKYKu2qq65iypQpnsmBtm7dyu7du+ncuTMDBgwgISGB9u3b89VXXxXYduvWrbRr1w6AY8eO\nMWLECFq3bs3ll1/OsWPHPPXuvPNOzzDhjz/+OAAvv/wyu3fvpl+/fvTr1w+A+Ph49u3bB8ALL7xA\nu3btaNeuHS+99JLn/Vq3bs1tt91G27ZtGThwYL73KQl/DrWRDfyfqi4WkWggWURmqqr3UIdbgD6q\n+puIDAHeBLp7re+nqvv8GGM+Ndz5IL5bs5fbejcrq7c1xpzKtDHw64rS3edZ7WHI+EJX16lTh27d\nujFt2jSGDRvGpEmTGD58OBEREXzxxRfUqFGDffv20aNHDy699NJC53t+7bXXqF69OmvWrGH58uUk\nJCR41j3zzDPUqVOHnJwcBgwYwPLly7nnnnt44YUXmD17NnXr1s23r+TkZN59910WLFiAqtK9e3f6\n9OlD7dq12bBhAxMnTuStt95i+PDhfPbZZ1x33XUl/jP57QxCVfeo6mJ3+TCwBmh4Up1fVPU39+V8\noJG/4imKvH/kBVv2BzIMY0w54N3MlNe8pKo89NBDdOjQgQsvvJBdu3axd+/eQvcxZ84czxd1hw4d\n6NChg2fd5MmTSUhIoHPnzqxatcrnMOHe5s6dy+WXX05kZCRRUVFcccUV/PTTTwA0bdqUTp06AaU7\nnHiZDNYnIvFAZ2DBKardAkzzeq3ADBFR4A1VfbOQfY8GRgM0adKkxLH2axnLnoN2DcKYcuMUv/T9\nadiwYdx3330sXryY9PR0unTpwnvvvUdqairJycmEhIQQHx/vc3jv09myZQvPP/88ixYtonbt2tx4\n443F2k+esLAwz3JwcHCpNTH5/SK1iEQBnwF/UlWf00KJSD+cBPEXr+JeqpoADAH+KCK9fW2rqm+q\naqKqJsbGxpY43ga1Iuw2V2MMUVFR9OvXj5tvvtlzcfrgwYPUq1ePkJAQZs+ezbZt2065j969e/PR\nRx8BsHLlSpYvXw44w4RHRkZSs2ZN9u7dy7RpJ34bR0dHc/jw4QL7uuCCC/jyyy9JT0/n6NGjfPHF\nF1xwwQWldbg++fUMQkRCcJLDh6r6eSF1OgBvA0NUNS2vXFV3uc8pIvIF0A2Y4894ARrUCOe39Cwy\nsnIID7GJg4ypykaOHMnll1/uaWq69tprueSSS2jfvj2JiYm0atXqlNvfeeed3HTTTbRu3ZrWrVvT\npYszKGjHjh3p3LkzrVq1onHjxvmGCR89ejSDBw/m7LPPZvbs2Z7yhIQEbrzxRrp16wbArbfeSufO\nnf06O53fhvsWp0H/P8B+Vf1TIXWaALOAUar6i1d5JBCkqofd5ZnAU6r67anes7jDfXv7fPFO7p+8\njLdGJXJRm/ol2pcxpnhsuG//ONPhvv15BnE+cD2wQkSWumUPAU0AVPV14DEgBvi3e4E42w20PvCF\nW1YN+Oh0yaG0JDSpDcDq3YcsQRhjqjS/JQhVnQv4vvfrRJ1bgVt9lG8GOhbcwv/iYqoTVi2Iwxk2\n7LcxpmqzntQnEREa1opgU+qRQIdiTJVWmWa7LA+K8/e0BOFDozrV2X80M9BhGFNlhYeHk5aWZkmi\nlKgqaWlphIeHn9F2ZdIPoqKpFRHCjv3pp69ojPGLRo0asXPnTlJTUwMdSqURHh5Oo0Zn1hfZEoQP\n0eHV2LLvKKpaaBd6Y4z/hISE0LRp00CHUeVZE5MPuw44vRDfmbslwJEYY0zgWILwISsnF4Cnp6wJ\ncCTGGBM4liB8eON6n31GjDGmSrEE4UNU2IlLM3YXhTGmqrIEUYg/XdgcgO12N5MxpoqyBFGIX90h\nv/s890NgAzHGmACxBFGIcZe1C3QIxhgTUJYgChESHMStvZoSHhJEbq5dhzDGVD2WIE6hUe0IMrJy\nWfOrz3mOjDGmUrMEcQpxMZEAXPzyXB79cmWAozHGmLJlCeIU+rY8MYXp1BV7AhiJMcaUPUsQpyAi\n9G9VD4BzYqMCHI0xxpQtSxCnMeHGrlzdpRFb0o4GOhRjjClTliCKIL5uJKmHj/OXT5cHOhRjjCkz\nliCKoEucM0/1x0k7AhyJMcaUHb8lCBFpLCKzRWS1iKwSkXt91BEReVlENorIchFJ8Fp3g4hscB83\n+CvOoshLEACz16UEMBJjjCk7/jyDyAb+T1XbAD2AP4pIm5PqDAGau4/RwGsAIlIHeBzoDnQDHheR\n2gRISHAQfVo4dzTd9O4i6zhnjKkS/JYgVHWPqi52lw8Da4CGJ1UbBryvjvlALRFpAAwCZqrqflX9\nDZgJDPZXrEVxXY84z/IXS3YFMBJjjCkbZXINQkTigc7AgpNWNQS8G/Z3umWFlfva92gRSRKRJH/O\nX3th63oMbX8WABN+tpnmjDGVn98ThIhEAZ8Bf1LVUh+zQlXfVNVEVU2MjY09/QbFJCK8eo1ziWTV\nbht6wxhT+fk1QYhICE5y+FBVP/dRZRfQ2Ot1I7essPKAEhG6xjuXQg5lZAU4GmOM8S9/3sUkwDvA\nGlV9oZBqXwOj3LuZegAHVXUPMB0YKCK13YvTA92ygLv5/KYAfGnXIYwxlVy101cptvOB64EVIrLU\nLXsIaAKgqq8DU4GhwEYgHbjJXbdfRMYBi9ztnlLV/X6MtcjanF0DgMe+WsWonvGBDcYYY/zIbwlC\nVecCcpo6CvyxkHUTgAl+CK1E4mIiCQ0OolWD6ECHYowxfmU9qYuhWWwky3ceJMf6QxhjKjFLEMWw\n9tfDACzYnBbgSIwxxn8sQRTDjw/2BeCtnzYHNhBjjPEjSxDFkDfT3Ox1qWzZd5SfNvivg54xxgSK\nP+9iqhL6Pf8DAMmPXEhMVFhggzHGmFJkZxDF9Mb1XfK93rLPJhQyxlQuliCKaVDbs/K9/vv0dQGK\nxBhj/MMSRAkkP3Ihl3d2xhBcuGW/DQNujKlULEGUQExUGC/+vpPntQ3iZ4ypTCxBlIKPbu0OwLs2\nDLgxphKxBFEKujatA8DnNoCfMaYSsQRRCkKCg2gW6/SN2LE/PcDRGGNM6bAEUUp6NosB4JkpawIc\niTHGlA5LEKXkkYvbAPDtql85lpkT4GiMMabkLEGUkojQYM9y53EzAhiJMcaUDksQfpCRlUv8mCmB\nDsMYY0rEEkQpmj92QKBDMMaYUmMJoiRU4Ye/waynATirZjirnhzkWT13wz4+mL/NelgbYyokSxAl\nIQIHt8PcF2HfBgAiw6pxe+9mAFz3zgIe/XIlYz9fEcgojTGmWPyWIERkgoikiMjKQtY/KCJL3cdK\nEckRkTruuq0issJdl+SvGEvFgMehWgRMf8hTNGZIq3xVPk7agTP9tjHGVBz+PIN4Dxhc2EpVfU5V\nO6lqJ2As8KOq7veq0s9dn+jHGEsuqh70+TNsmAHrnbuXRKRAtUtf+bmsIzPGmBLxW4JQ1TnA/tNW\ndIwEJvorFr/rfgfEnAvTx0J2JgDv39yNUT3jeP26BAC2Ww9rY0wFE/BrECJSHedM4zOvYgVmiEiy\niIw+zfajRSRJRJJSUwM09We1UBj0V0jbCAvfAKB3i1ieGtaOwe0a0LFxLY4cz2bpjgPEj5lCZnZu\nYOI0xpgzEPAEAVwC/HxS81IvVU0AhgB/FJHehW2sqm+qaqKqJsbGxvo71sK1GAjNB8KPf4cjKflW\nJcbVJidXuexVp5nplVkbAhGhMcackfKQIEZwUvOSqu5yn1OAL4BuAYjrzA16FrLS4fun8hV3ja+T\n7/Vni23UV2NM+RfQBCEiNYE+wFdeZZEiEp23DAwEfN4JVe7Ube5cj1jyX9i9xFN8QfO6+artOnCs\nrCMzxpgz5s/bXCcC84CWIrJTRG4RkTtE5A6vapcDM1T1qFdZfWCuiCwDFgJTVPVbf8VZ6vr8GSLr\nwrS/OB3pcPpGjHVvfW1ZPxrAbns1xpR7Upm+qBITEzUpqRx0m1j8Pnx9N1zxNnS4Ot+qURMWMmd9\nKhd3aMCr1yQEKEBjjHGISHJh3QnKwzWIyqfTddCgE8x8DDKP5lv19LB2gDMMhzHGlGeWIPwhKAiG\n/B0O73aG4fDSJKY6A9vUJzwkyMZoMsaUa5Yg/KVJd2h/Nfz8Mvy2Nd+qc+tFsffQcS55ZW5gYjPG\nmCKwBOFPFz4JQcEw45F8xfExzvzVq3Yf4tmpNkWpMaZ8sgThTzUbwgX3w5r/weYfPcWXdW7oWX5z\nzuZARGaMMadlCcLfet4FtZrAt2MgJxuA0GpBbHxmiKfKy99v4Ojx7EBFaIwxPlmC8LeQCBj4DKSs\nhuR3PcXVgoMYd5lzR9MLM9fT9vHpgYrQGGN8sgRRFlpfAk17w+xnIP3EkFMXnJu/h3V2jg3iZ4wp\nPyxBlAURGDweMg7C7Gc9xfF1I/nxwb6Mdmeg25ByJFARGmNMAUVKECJyjoiEuct9ReQeEanl39Aq\nmfptIfEWSHoH9q7yFMfFRDK43VkAJG0t6vQZxhjjf0U9g/gMyBGRc4E3gcbAR36LqrLq9xCE13Qu\nWHsNcdK5sZNrH/1qlTUzGWPKjaImiFxVzcYZXO9fqvog0MB/YVVS1etAv4dhyxzn1leX9xSl363Z\nG4jIjDGmgKImiCwRGQncAHzjloX4J6RKrstNUK8tzHgYsjI8xf8c0QmAO/67mA/mbwtUdMYY41HU\nBHET0BN4RlW3iEhT4AP/hVWJBVeDIePhwHaY9y9PcZe42p7lR79cSfyYKRzPzglEhMYYAxQxQajq\nalW9R1UnikhtIFpV/+bn2Cqvpr2h9aXw0wtw0JldrlHt6rxxfZd81f42bV0gojPGGKDodzH9ICI1\nRKQOsBh4S0Re8G9oldzAcZCb4wwJ7hrU9iw+uaOn5/WEn7cEIjJjjAGK3sRUU1UPAVcA76tqd+BC\n/4VVBdSOh173wcpPIelED+uu8XXYOv5iz+uN1jfCGBMgRU0Q1USkATCcExepTUn1fhDOvQimPgCb\nf8i36nJ3QL+LX/4pAIEZY0zRE8RTwHRgk6ouEpFmwIZTbSAiE0QkRURWFrK+r4gcFJGl7uMxr3WD\nRWSdiGwUkTFFPZgKJ7gaXDUB6raAj0dB6nrPqheGdwTgeHYuydusA50xpuwV9SL1J6raQVXvdF9v\nVtUrT7PZe8Dg09T5SVU7uY+nAEQkGHgVGAK0AUaKSJuixFkhhdeAkZOgWih8NByOpgFO34i8ITiu\nfG0eOTb7nDGmjBX1InUjEfnCPSNIEZHPRKTRqbZR1TlAcX76dgM2ukkoE5gEDCvGfiqO2nEw4iM4\ntBs+vg6yjwPw0NDWniotHpnGK7M28PPGfRzKyApUpMaYKqSoTUzvAl8DZ7uP/7llJdVTRJaJyDQR\naeuWNQR2eNXZ6ZZVbo27wWX/hu2/wP/u9QzFcUefcwDIyVWen7Gea99eQIcnZpCRZX0kjDH+VdQE\nEauq76pqtvt4D4gt4XsvBuJUtSPwL+DL4uxEREaLSJKIJKWmppYwpABrfxX0fQiWTYSf/gHAmCGt\n6HXSsOAArR791sZtMsb4VVETRJqIXCciwe7jOiCtJG+sqodU9Yi7PBUIEZG6wC6cwQDzNHLLCtvP\nm6qaqKqJsbElzVnlQJ8/Q/urYdY4WOXkzP/e2p2t4y/2TDCUZ9balEBEaIypIoqaIG7GucX1V2AP\ncBVwY0neWETOEneUOhHp5saSBiwCmotIUxEJBUbgNG9VDSJw6SvQuDt8cTvsSvasur5HHFvHX8xD\nQ1sBMPqD5ML2YowxJVbUu5i2qeqlqhqrqvVU9TLglHcxichEYB7QUkR2isgtInKHiNzhVrkKWCki\ny4CXgRHqyAbuwrmtdg0wWVVX+XqPSiskHH7/IUTVg4kj4cCOfKuHJ544wVq9+1BZR2eMqSJEtXi3\nT4rIdlVtUsrxlEhiYqImJSUFOozSk7IG3hkItZrAzd9CWLRn1VdLd3HvpKUA+XpeG2PMmRCRZFVN\n9LWuJFOOyumrmBKp1xquftdJFJ/d6ozd5BrU9izPcvyYKbw6e2MgIjTGVGIlSRDWc6ssnHshDPkb\nrP8WZjzqKQ4PCSY2Oszz+rnp69h14FggIjTGVFKnTBAiclhEDvl4HMbpD2HKQrfboNvtMP9VSJrg\nKV70cP7xEu/6aDEAxW02NMYYb6dMEKoarao1fDyiVbVaWQVpgEHPOgP7TXkANs32FK8dN5hO7pzW\nS7YfoPNTM2g6dirfrbapS40xJVOSJiZTlvIG9ottCZNvgFRnMqHwkGC+/OP5nmq/pTvDcNz6fhKv\n/bApIKEaYyoHSxAVSXgNuObjAgP7AXx2Z88C1f/27Vpe/3ET475ZTdqR42UZqTGmErAEUdHUagIj\nJsKhPfDxtZB5FIAucXX47v7eAAR53V82ftpa3pm7hS5PfxeIaI0xFZgliIqocVe4/DXYsQDevhDS\nnKakc+tFs3X8xWz+68UkPVJwwr9L/jW3rCM1xlRgliAqqnZXwrWfwuE98GY/WD893+q6UWHc0qtp\nvrIVuw6WZYTGmAqu2D2py6NK15O6KH7b5swh8ety6DsWev8Zgpy8n5OrLNq6n+b1ohg/bS2fJO8k\nOrwaGVk5bHhmaIADN8aUB/7qSW3Kg9pxcMsM6DACfvgrTBoJxw4AEBwk9GgWQ0xUGDnuD4HDGdlk\n5Sh/nbomkFEbYyoASxCVQUgEXP46DH0eNn4Hb/WDvavzVXnYa3Y6gDfmbGZz6pGyjNIYU8FYgqgs\nRJwe1zdOce5sensArPzMszomKqxAkvhwwfayjtIYU4FYgqhsmvSA0T/CWe3h05th+sOQkw3ArRc0\nZeHDA9jwzBDqRYcxZfmeAAdrjCnPLEFURjUawA3fQNfbYN4r8MFlcCQVEaFedDghwUGkHD7Or4cy\n6PW3WWTl5DJ91a8cz7Z5ro0xJ1iCqKyqhcLFz8Nlr8HORfBmH9h5Yga6vi2d6Vl3/naM5g9P4/YP\nkmn5iM1zbYw5wRJEZdfpGrh5OkgwvDsYFr8PwHs3dfNZ/eEvVnqWVZVvlu8mI8vOLIypiixBVAVn\nd4LRP0DcefD13fC/eyH7OFv+WrAvxMdJOzh63LlmcdfEJdz10RJaPfota389ZMOIG1PFWIKoKiJj\n4LrP4fw/QfJ78O4QZP9mVj81CID7Lmzhqdr2cadX9pGMbE/Z4Jd+4oslu8o0ZGNMYPmtJ7WITAB+\nB6Soajsf668F/oIzdelh4E5VXeau2+qW5QDZhfXyO1mV7EldHKu/gi//CNnHIPFmp/d1VCwphzLo\n9uz3APz9yg78+bPlBTYd0bUxMVGhPDCwJSI266wxFV2gelK/Bww+xfotQB9VbQ+MA948aX0/Ve1U\n1ORgzkCbYXB3MiSMgkXvwMud4MfnqBee45nGNC85xEaH8ezl7T2bTlq0g1dnb6Lp2KkBCd0YU3b8\nliBUdQ6w/xTrf1HV39yX84FG/orF+BBdH373IvxhPjTrC7OfhpcTmDNgG8GcuCj9y5j+XNO9Cbf3\nblZgF5MX7Si7eI0xZa68XIO4BZjm9VqBGSKSLCKjT7WhiIwWkSQRSUpNTfVrkJVSbAsY8aFzp1Ot\nJkR8ez9LY5/g3Z6prB83mJBg5yMydmhrRvWM4+7+53o2ffjLFYGK2hhTBvw6mquIxAPf+LoG4VWn\nH/BvoJeqprllDVV1l4jUA2YCd7tnJKdk1yBKSBXW/A++fxLSNkLc+XDRU9CoYCvfdW8vYOXugyx+\n5CKCguxahDEVVbkdzVVEOgBvA8PykgOAqu5yn1OALwDfN+2b0iUCbS51mp0u/gfsW++M6TT5Bs+k\nRHl6t6jLgfQsmj00lfgxU/h62e4ABW2M8ZeAJQgRaQJ8Dlyvquu9yiNFJDpvGRgIrPS9F+MXwSHQ\n9Va4Zwn0GQMbZsKr3WDqn+HoPgAGtjkr3yb3TFwSiEiNMX7ktwQhIhOBeUBLEdkpIreIyB0icodb\n5TEgBvi3iCwVkby2ofrAXBFZBiwEpqjqt/6K05xCWDT0G+skioRRsOht+GcnmPMc8TXgPzfnP7F7\nfvq6Ars4lplD/JgpdHxyRllFbYwpJTajnCm61PXO9Ym130BkPej9AHS5kf7/nMfm1KMAzLyvN83r\nR3s2+WlDKte/sxCAOQ/2o0lM9YCEbozx7VTXICxBmDO3fT7Mehq2/gQ1GqG9H+S99PN4cuoGT5Vv\n7u5FXEx12j9R8Mzhszt70iWuTllGbIwphCUIU/pUYcuPTqLYuQhqx3Pf3iF8lXs+uSe1XDasFcGu\nA8fylW0df3FZRmuMKUS5vYvJVGAiTge7W2bCNZMhLJoXQ19jeezjDA2aj3Bi2PDP7jyPx37XJt/m\nG1NsulNjyjtLEKZkRKDFIBg9B4a/T1R4CP8OfZlvQh+mf9BiZv7pAs6qGc7NvZqydfzFDGnn3P10\n4Qs/cjA9C4B9R45zOCOLwxlZvDp7I1k2J4Ux5YI1MZnSlZsDKz/j6PRxRB7dDg0Tof8jztmGCLm5\nSrOHTozj1KNZHeZvzj8iS9f42twzoDkXNI8t29iNqYKsicmUnaBg6DCcyPsXw6X/giN7nSlP3/sd\nbJtHUJCw4KEBnuonJweARVt/4/p3FpJyOKMsIzfGnMQShPGP4BCn78TdyTD0eUjb4Mxo98EV1D+4\nwtPUdCrdnvme+DFTyiBYY4wv1sRkykZmOiS9A3NfhPQ0aNgFuo0mq9Uw3l2wm6wcZdbaFD65vSdz\nN+5j1ISFnk2jwqpxPNsZYbZz49pMvqNnoI7CmErHbnM15cfxI7BsIix80xnrKTIWutzoTFxU42xP\ntc2pRxj44hyycwt+Pu0WWWNKjyUIU/6owubZsPAtWDcNJAhaXwLdb4cmPZ27o8BnE9MTl7QhIjSY\n33dtUtZRG1PpWIIw5dtvW51xnhZ/ABkHoH576HYbtL+anUeh/z9+5KNbu/Pf+dv4cumJUWPfHpXI\nhW3qBy5uYyoBSxCmYshMh9HrAJAAABpMSURBVBWTYcGbkLIKImpD5+udkWVrx6GqBaY6XfXkICLD\nqhW6y4PpWczduI8/frQYgPdu6krflvX8ehjGVCSWIEzFogrbfoGFb8Cab0BzoeUQ6Daavyyuw8fJ\nO/NVb14vig1ePbPv6X8u913UglyFcx4qOHe2XcMw5gRLEKbiOrgTkiZA8nuQnoZGNeAIEUSFh7Iu\n5SiKkEMQuQi5CEoQOQRRv2YEuw8eJ1eDyEHIJYjjhPJRTn9GjbqNfq2sacoYsARhKoOsDFj1OWya\nBbnZkJtD2pEMkremISjB5BKEuqnCfS3qpoxcWtaLJOjwbqKO72VeThuqDRlH1/MuBODblXtI2vob\nj5w0XlSpOLAd5v0bIutCr/shyLoemfLlVAmi8MZbY8qTkHDodI3zcMUA5x3PZuGWNDKzlcFu57u3\n5mzmmalrAHjp9524rHNDZ4OcLB597AHurfY5dWdcyZblg/n+7Nt5+hdnpNnresQRXzeydOLdt9Hp\n87F8ktNEprmwYyFc+RaE1yyd9zDGz+znjKnQosKq0b9VfU9yABjRrTEAN54XfyI5AASH8Kexf6fv\n8Rd4Ofsyztozi1HJV/FotQ+oxWH+8OHifPv+YP42Oj81g0e+XMG3K/cULaC9q+DTm+HVrrDyU0i8\nBf60wulNvul7eGuAM/GSMRWANTGZKue1Hzbxt2/XUo/fuK/apwwP/oGjRPDv7Ev5v0dfYNamwzzw\nyTIOZ2Tn2+6UF7d3JcOcf8C6KRAaBV1vgZ53QZTXHVNb58LkGyAnE654C1oO9tMRGlN01sRkjJfb\nezcjOyeXSzudza8HhxAUuZfVb93DGJnE7r/OYEbWcI7m9uLkE+yFW/bTremJmfCOZ+eQvmEOtZJe\nRjbNgvBa0GeM09mvuo8Z8+J7wegf4ONrYeII6PewM22r2ynQmPLGr01MIjJBRFJEZGUh60VEXhaR\njSKyXEQSvNbdICIb3McN/ozTVC1BQcLdA5oTFxNJ92YxSP02BF83mZGZD5OqtfhH6OtMCX2I3kHL\nuKf/uVzfIw6AsZ8vd3agytHV01n2VE9qf3wZR7YugQufhPtWQr+xUL0OWTm53PzeIl6YsS7/m9dq\nDDd9C+2vhtlPw+RRzvAjxpRDfm1iEpHewBHgfVVt52P9UOBuYCjQHfinqnYXkTpAEpAIKJAMdFHV\n3071ftbEZErihgkLmbN+L1eHL2Jc9OeEHd5BTnxfggeNY/zSUN74cQNPttjGdZmfEPTrUnZrHd7I\nvoSPc/qSQRi/T2zMx0k7Cuz39esSGNyuQf5CVZj3Csx8DGJbwYgPyaoZT0ZWDtHhIWV0xMYE+DZX\nEYkHvikkQbwB/KCqE93X64C+eQ9Vvd1XvcJYgjAltXj7b3RuXAvJyYRF78Ccv8OxAxxrcQnb1y6m\nZdBOtubW57WcS/k85wKyithK++zl7bkioSEj35rPi8M7nbhbatMs+OQmjmXlctuxPzI3tz2LH72I\nOpGhfjxKY04ozxMGNQS8f3LtdMsKKy9AREaLSJKIJKWmpvotUFM1JDSpjYhAtTDo+Qe4Zymcfy8R\nm6ZTPSSIezL/yIDM5/k4px8LHh3Clr8O5YGBLXzu66PbunuWH/piBa0e/ZYl2w/Q9/kfPOXHGvfh\ngoOPsy2rJv8JGc9twd+QMG4G93+8lK+W7vL34RpzShX+IrWqvgm8Cc4ZRIDDMZVNRC246Eno/wix\nOVDn2/Xk/LKVG8+L9/zKv6t/c3q3iGXSoh08PawdIjhJBtjy16G0fXw66Zk5+Xb77x828oe+59L6\nsW+B+lyR+SQvhb3BwyEf0SZoG2OW3MbnS3aR0KQ2jetUL+ujNgawJiZj/G7fkeMs2X6ARrUjEIHB\nL/1UoM7nfziPhMa1SPrgYRI2/ZtVGsftmfezm7rMebAfTWLOLEm8/uMmWjeoQZ8WNq+3ObXyfJvr\n18BdIjIJ5yL1QVXdIyLTgWdFpLZbbyAwNlBBGlMSdaPCuOgUw5KPG9aWhCbORz1x1LOwrjdtPruV\nr+UR/pB5L72fc85EpIi3w+bkKuOnrfW898KHBhAU5G6bnQlZRyHzqDN6bpb7nHn0xHJWOmQegezj\nULMx1G8DdVtCqJ3JVDX+votpIs7ZQF1gL/A4EAKgqq+L84l/BRgMpAM3qWqSu+3NwEPurp5R1XdP\n9352BmEqgqycXH5Yl8pt7zufVZ8d8PZtIOOD4QQf2MaEnMG0jm/IBU1rkHrgMJqdSURwDjVCcp0v\n/JzjkJPlfKHnZLJqxz6ys44TShahZBMblk2NIDcx5GYXfK8iEajTDOq1hnptnKRRrw3UOQeCA/07\n05SEDdZnTDk0fdWvNK8XRbPYKN8VMg6S/vFtVN8yHYBcFTKpRiYhZFKNyOrViQiPgOBQqBbqPAeH\n8dOWQ2R51UvXMEac3wpCqkNopPPwtXxyWXAo/LYFUlZDyhpnGJGUNbB/kzO2FDh16rZ0Ekde0qjX\nBmo2sg6AFYQlCGMqKFWl46NfczTbGdYcTnzptmtYg9+OZrHrwDH6t6rH+Cva8+uhDC595Wfuv6gF\ndaPC+CR5B0u2H2DCjYn0L60hzrOOOfOJeyeNlNVwyOuuq7Aa7tmGe8aR9xxZt3RiMKXGEoQxFVza\nkeN0efo7AOaN7c+9k5aycMv+Quv/a2RnLul4Np8v3sn9k5cBsOGZIYQEB7HrwDEa1orIV19VyVUI\nDhJW7T7IwfQszjv3DL/Mjx2A1LVu0lgNKWudmQGPefVvrV63YNKo18pGuA0gSxDGVDJjP1/BxIXb\nC12fd10jN1dp5jWr3vDERkxOcmbke++mrvRuHsudHyYzfdXeAvvo3rQOH9/es2SBqsKRlBPNVHnP\nqWudC+F5ajTKf8ZRq7FX01cEhOQ9R1jTVSmzBGFMJbMt7Sh9nvsBgJVPDgKg3ePOtYq/DG7FnX3P\n8dT1Pvs4U9f3iOPKLo3o1LhWyQI+WW4uHNxxImmkrnWf1zsX3U8lpPqJR2j1/AkktDpUj4FG3SCu\nJ9SKs4RyGpYgjKkiUg5lUK9GeIHywxlZtH9ixim3vbpLIz5x5/tuWCuCXQeOFajzn5u70adFLMNe\n/ZllOw4wf+wAzqrpvN/B9CzWpxymemgw905ayhOXtKVX81M3U63Zc4jj2bnUrxFGg5oRkJMN+zfD\n4d3OtY7Mo85zVt7tt+knlgtbf/hXOH7QeYPos51EEXceNDnPGffKZvXLxxKEMYZjmTk88uVK7ruo\nOSt3HeKO/yYDMKJrY8Zd1o6Q4PxfnPFjpvjcT3RYNQ4fP3G77OqnBhEcJLR85NsCdQvrv/HCzPXU\nCK/G01PWeMqSH7mQmKiwYh1bPrm5ztnI9nmw7Rfn+bA74VNEbWjcw00a50ODjhBctQdHtARhjMkn\nOyeXBz9dTo9mdfh91yY+6/zt27W89sMmGteJYMf+gmcT3kb1jOP9edsKlH94a3fO97rYXdRrJ6VK\nFX7b6iaLX2DbPOdWXXCaqRolOmcXcT2hUVfnukcVYgnCGFMsWTm5njOLrfuO5htocMmjF9F53Mx8\n9d+5IZHOTWpz6FiWp+43d/eifo1wLnv1Z5/NVg8Oaslz00/Mm9GsbiQPDGrJ0Pb5h0jPyVWCg0rp\nesLhvc6ZxfZ5sO1n+HUloBAUAs0vgvZXQYshVaL3uCUIY0ypeHbqGtKOZPKP4R0BmL0uhZveXQRA\ns9hIZv1fX0/dwpqoAH4Z059DGVnEx0QSHhLM5tQj9P/Hj/nqeDdPrd97mIEvzqFfy1jevalbKR8V\nkHEQdiyETbNh1edOk1RoFLS+xEkWTftW2h7jliCMMX6jqqRn5hAZlv8LNDsnl3Mfnlag/vf/14dz\nfPQev/U/i/huTYrn9Ue3dee8c5zmKe9k8/7N3ejtz0EIc3Ocs4rlk2H1184F78h60O4KZybAhl0q\n1Z1RliCMMQFzMD2Ljk/N4Kbz43n8kranrb969yGGvuyMeJv0yIV8mrzTM/igt8S42lyd2Ih/zFjP\nL2P6c/BYFl2e/o5Jo3vQo1lM6QSflQEbZzrJYv105xbcOs2cRNH+aqjbvHTeJ4AsQRhjKgxVpenY\nqQXKHxjYgudnrPe5TXxMdbampXtevzyyMwPb1Cc8JLj0Ass4CGv+5ySLLXMAhQadoMNwaHsF1Ghw\n2l2UR5YgjDEVysk9wKuHBrP6qcEs3LKf4W/Mo1lsJJtTj552P3nDi5S6Q3ucaxXLJ8OepYBA0wvg\nrA4QGQtR9ZznyLruc6wzS2E5ZAnCGFPh7DtynMSnv6NhrQh+HtO/wPqNKYcJDgrihZnr+d+y3YDT\nJ6PNY9M9df5+ZQeGd23s50A3wIpPYPVXzu202Rm+64XVOJEsvBNHZCxExTrrq4VBtfDCn4NDS/36\nhyUIY0ylpapMTtpBnxb1PL261+w5xJB/npi579ZeTXl77haWPTaQmtX92DFO1Rlj6mgqHN3nPruP\nI17LeevS04Az/A6uFg7BYfmTR/RZcOM3xQrZEoQxpsq5YcJCflyfWqB83dODCatWitcmSiInG47t\ndwY0zDzqnH1kHz/pOQNyMgtZ5z6HRMJlrxYrBEsQxpgqKa+Z6mRbx19MyqEMalUPJbRa1R6bqTzP\nSW2MMX5TNyqMSaN7EB1ejbiYSM+It979Kt4elcjZtSL4/Zvz6NEshrdG+fyurJIsQRhjKjXvPhGv\nXNOZuz5akm/9re+faHWYuXov29PSaRJT+YfYKAq/nluJyGARWSciG0VkjI/1L4rIUvexXkQOeK3L\n8Vr3tT/jNMZUDRe3b8DLIzvTukENPv/DeXSJq12gzsNfrghAZOWT365BiEgwsB64CNgJLAJGqurq\nQurfDXRW1Zvd10dUtZDZ3H2zaxDGmDOlqp4xn5qOnYIq1I0KZe5f+hMeEsyyHQdoc3YN//SnKAdO\ndQ3Cn0fcDdioqptVNROYBAw7Rf2RwEQ/xmOMMQV4z1fxv7t6AbDvSCYdn5zB9rR0hr36M80fnsb+\no5ks2rqf+DFTiB8zhZ837gtUyGXGnwmiIbDD6/VOt6wAEYkDmgKzvIrDRSRJROaLyGWFvYmIjHbr\nJaWmFrylzRhjiqpdw5q8c4PzY/p4di69n5vtWZcwbiZXvz7P8/ratxeQnZMLOEORV0bl5SL1COBT\nVc3xKotT1V0i0gyYJSIrVHXTyRuq6pvAm+A0MZVNuMaYympA6/p8PLoHv39zvs/1VyY0IjY6jNd/\n3JRvtNr+reox4cauZRVmmfDnGcQuwLuPeyO3zJcRnNS8pKq73OfNwA9A59IP0RhjCureLIap91zA\nDT3j2PDMEFY+OQiAFvWj+Mfwjvx5UMsC28xam8LsdSkFyisyf16kroZzkXoATmJYBFyjqqtOqtcK\n+BZoqm4wIlIbSFfV4yJSF5gHDCvsAnceu0htjClLqsrx7FzW7DnE5f/+BYDNzw4lqLRmvisDAblI\nrarZwF3AdGANMFlVV4nIUyJyqVfVEcAkzZ+pWgNJIrIMmA2MP11yMMaYsiYihIcE07lJba5IcC6x\nJj5TsOd2RWVDbRhjTCnIzVXOfXgqeder3xqVyIBW9QgKEjalHiGuTnVylXI3tIeNxWSMMWUgPTM7\n33DjhRk3rC3X94xn35HjDHpxDmlHM1n40ABio8Py3XZbFixBGGNMGVFVHv5yJR8t2H7G2wYJbP7r\nxX6IqnCWIIwxpoxl5eRy538Xc1f/c8n7nq0ZEcKstSk8PWWNp97ZNcM5nJHN4ePZADSpU53ZD/Rl\n94FjPP71KurXCOfZy9t5ziw2px4hLiaS4CAhIyunxNOqWoIwxphyJDdX2bY/nX/MWMdzV3UkIjSY\nY5k59Bz/PQfSs854f1d3acRzV3csViyBGmrDGGOMD0FBQtO6kbxyTQIRoc4ZQERoMEsevYhruzfx\n1Gt1VnSR9vdJ8k4ys3NLPc7y0pPaGGOqPBHhmcvb0/OcGCJDq9GvVT0A0o4c54slu3h6yhqm3XsB\nYdWCeGfuFh65uA25qkSEBPul74U1MRljTBVmTUzGGGPOmCUIY4wxPlmCMMYY45MlCGOMMT5ZgjDG\nGOOTJQhjjDE+WYIwxhjjkyUIY4wxPlWqjnIikgpsK+bmdYF9pRhOeWHHVbHYcVUsleG44lQ11teK\nSpUgSkJEkgrrTViR2XFVLHZcFUtlPa481sRkjDHGJ0sQxhhjfLIEccKbgQ7AT+y4KhY7roqlsh4X\nYNcgjDHGFMLOIIwxxvhkCcIYY4xPVT5BiMhgEVknIhtFZEyg4zkdEZkgIikistKrrI6IzBSRDe5z\nbbdcRORl99iWi0iC1zY3uPU3iMgNgTgWbyLSWERmi8hqEVklIve65RX62EQkXEQWisgy97iedMub\nisgCN/6PRSTULQ9zX29018d77WusW75ORAYF5ojyE5FgEVkiIt+4ryv8cYnIVhFZISJLRSTJLavQ\nn8NiU9Uq+wCCgU1AMyAUWAa0CXRcp4m5N5AArPQq+zswxl0eA/zNXR4KTAME6AEscMvrAJvd59ru\ncu0AH1cDIMFdjgbWA20q+rG58UW5yyHAAjfeycAIt/x14E53+Q/A6+7yCOBjd7mN+/kMA5q6n9vg\ncvB5vB/4CPjGfV3hjwvYCtQ9qaxCfw6L+6jqZxDdgI2qullVM4FJwLAAx3RKqjoH2H9S8TDgP+7y\nf4DLvMrfV8d8oJaINAAGATNVdb+q/gbMBAb7P/rCqeoeVV3sLh8G1gANqeDH5sZ3xH0Z4j4U6A98\n6paffFx5x/spMEBExC2fpKrHVXULsBHn8xswItIIuBh4230tVILjKkSF/hwWV1VPEA2BHV6vd7pl\nFU19Vd3jLv8K1HeXCzu+cn3cbvNDZ5xf2xX+2NxmmKVACs4XxSbggKpmu1W8Y/TE764/CMRQDo8L\neAn4M5Drvo6hchyXAjNEJFlERrtlFf5zWBzVAh2AKV2qqiJSYe9dFpEo4DPgT6p6yPmR6aiox6aq\nOUAnEakFfAG0CnBIJSYivwNSVDVZRPoGOp5S1ktVd4lIPWCmiKz1XllRP4fFUdXPIHYBjb1eN3LL\nKpq97mkt7nOKW17Y8ZXL4xaREJzk8KGqfu4WV4pjA1DVA8BsoCdOU0TeDzTvGD3xu+trAmmUv+M6\nH7hURLbiNM32B/5JxT8uVHWX+5yCk9C7UYk+h2eiqieIRUBz986LUJyLZ18HOKbi+BrIu0viBuAr\nr/JR7p0WPYCD7mnydGCgiNR278YY6JYFjNse/Q6wRlVf8FpVoY9NRGLdMwdEJAK4COf6ymzgKrfa\nyceVd7xXAbPUuer5NTDCvRuoKdAcWFg2R1GQqo5V1UaqGo/z/2aWql5LBT8uEYkUkei8ZZzPz0oq\n+Oew2AJ9lTzQD5y7ENbjtAs/HOh4ihDvRGAPkIXTrnkLTlvu98AG4DugjltXgFfdY1sBJHrt52ac\nC4IbgZvKwXH1wmn7XQ4sdR9DK/qxAR2AJe5xrQQec8ub4XwRbgQ+AcLc8nD39UZ3fTOvfT3sHu86\nYEig/8284urLibuYKvRxufEvcx+r8r4TKvrnsLgPG2rDGGOMT1W9ickYY0whLEEYY4zxyRKEMcYY\nnyxBGGOM8ckShDHGGJ8sQZgKRURy3FE2l4nIYhE57zT1a4nIH4qw3x9EpNJOPl8cIvKeiFx1+pqm\nsrIEYSqaY6raSVU7AmOBv56mfi2ckUTLJa9ex8aUO5YgTEVWA/gNnDGcROR796xihYjkjco7HjjH\nPet4zq37F7fOMhEZ77W/q8WZu2G9iFzg1g0WkedEZJE73v/tbnkDEZnj7ndlXn1v4swr8Hf3vRaK\nyLlu+Xsi8rqILAD+Ls5cA1+6+58vIh28juldd/vlInKlWz5QROa5x/qJO34VIjJenPk0lovI827Z\n1W58y0RkzmmOSUTkFXHmZfgOqFea/1im4rFfL6aiiRBnZNRwnDkk+rvlGcDl6gzwVxeYLyJf44zd\n305VOwGIyBCcIZq7q2q6iNTx2nc1Ve0mIkOBx4ELcXqqH1TVriISBvwsIjOAK4DpqvqMiAQD1QuJ\n96CqtheRUTijn/7OLW8EnKeqOSLyL2CJql4mIv2B94FOwKN527ux13aP7RHgQlU9KiJ/Ae4XkVeB\ny4FWqqp5w3sAjwGD1Bl8Lq+ssGPqDLTEmaOhPrAamFCkfxVTKVmCMBXNMa8v+57A+yLSDmfIg2dF\npDfO8NMNOTEks7cLgXdVNR1AVb3n1sgbIDAZiHeXBwIdvNria+KMF7QImCDOAINfqurSQuKd6PX8\nolf5J+qM8grOMCNXuvHMEpEYEanhxjoibwNV/U2cUVTb4HypgzPR1Tyc4bMzgHfEmd3tG3ezn4H3\nRGSy1/EVdky9gYluXLtFZFYhx2SqCEsQpsJS1XnuL+pYnHGbYoEuqpolziij4We4y+Pucw4n/m8I\ncLeqFhhozU1GF+N8Ab+gqu/7CrOQ5aNnGJvnbXEmohnpI55uwACcwfDuAvqr6h0i0t2NM1lEuhR2\nTO6ZkzEedg3CVFgi0gpn2tg0nF/BKW5y6AfEudUO40xhmmcmcJOIVHf34d3E5Mt04E73TAERaSHO\niJ9xwF5VfQtnRrWEQrb/vdfzvELq/ARc6+6/L7BPVQ+5sf7R63hrA/OB872uZ0S6MUUBNVV1KnAf\n0NFdf46qLlDVx4BUnCGofR4TMAf4vXuNogHQ7zR/G1PJ2RmEqWjyrkGA80v4Brcd/0PgfyKyAkgC\n1gKoapqI/CwiK4FpqvqgiHQCkkQkE5gKPHSK93sbp7lpsThtOqk40032BR4UkSzgCDCqkO1ri8hy\nnLOTAr/6XU/gNFctB9I5Maz008Crbuw5wJOq+rmI3AhMdK8fgHNN4jDwlYiEu3+X+911z4lIc7fs\ne5xRSpcXckxf4FzTWQ1sp/CEZqoIG83VGD9xm7kSVXVfoGMxpjisickYY4xPdgZhjDHGJzuDMMYY\n45MlCGOMMT5ZgjDGGOOTJQhjjDE+WYIwxhjj0/8DKUgNyrToeZAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_metrics()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.886970</td>\n",
       "      <td>1.976637</td>\n",
       "      <td>0.382795</td>\n",
       "      <td>0.857725</td>\n",
       "      <td>02:34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.672390</td>\n",
       "      <td>1.520128</td>\n",
       "      <td>0.562230</td>\n",
       "      <td>0.927717</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.511721</td>\n",
       "      <td>1.400351</td>\n",
       "      <td>0.607025</td>\n",
       "      <td>0.952660</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.365525</td>\n",
       "      <td>1.284712</td>\n",
       "      <td>0.670654</td>\n",
       "      <td>0.958768</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.269087</td>\n",
       "      <td>1.171946</td>\n",
       "      <td>0.729957</td>\n",
       "      <td>0.971749</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.200656</td>\n",
       "      <td>1.139472</td>\n",
       "      <td>0.738865</td>\n",
       "      <td>0.971494</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.141597</td>\n",
       "      <td>1.100428</td>\n",
       "      <td>0.767625</td>\n",
       "      <td>0.976330</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.092285</td>\n",
       "      <td>1.052233</td>\n",
       "      <td>0.778061</td>\n",
       "      <td>0.977857</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.055059</td>\n",
       "      <td>1.045934</td>\n",
       "      <td>0.803003</td>\n",
       "      <td>0.973785</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.018445</td>\n",
       "      <td>1.008572</td>\n",
       "      <td>0.819038</td>\n",
       "      <td>0.976075</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.977552</td>\n",
       "      <td>0.972313</td>\n",
       "      <td>0.818783</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.956351</td>\n",
       "      <td>0.967597</td>\n",
       "      <td>0.827182</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.933387</td>\n",
       "      <td>0.980867</td>\n",
       "      <td>0.821838</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.916552</td>\n",
       "      <td>0.930698</td>\n",
       "      <td>0.834818</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.880760</td>\n",
       "      <td>0.927898</td>\n",
       "      <td>0.843472</td>\n",
       "      <td>0.980402</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.867070</td>\n",
       "      <td>0.897542</td>\n",
       "      <td>0.853143</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.791038</td>\n",
       "      <td>0.874412</td>\n",
       "      <td>0.866887</td>\n",
       "      <td>0.983711</td>\n",
       "      <td>02:35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.728712</td>\n",
       "      <td>0.849107</td>\n",
       "      <td>0.871978</td>\n",
       "      <td>0.987529</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.680888</td>\n",
       "      <td>0.827108</td>\n",
       "      <td>0.881649</td>\n",
       "      <td>0.987274</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.667463</td>\n",
       "      <td>0.823176</td>\n",
       "      <td>0.882667</td>\n",
       "      <td>0.987529</td>\n",
       "      <td>02:34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_metrics()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.865464</td>\n",
       "      <td>1.788673</td>\n",
       "      <td>0.416136</td>\n",
       "      <td>0.872487</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.638481</td>\n",
       "      <td>1.537148</td>\n",
       "      <td>0.543395</td>\n",
       "      <td>0.932807</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.480211</td>\n",
       "      <td>1.393901</td>\n",
       "      <td>0.624332</td>\n",
       "      <td>0.948333</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.360553</td>\n",
       "      <td>1.244645</td>\n",
       "      <td>0.699669</td>\n",
       "      <td>0.965386</td>\n",
       "      <td>02:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.253954</td>\n",
       "      <td>1.157895</td>\n",
       "      <td>0.733011</td>\n",
       "      <td>0.964622</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.180066</td>\n",
       "      <td>1.130373</td>\n",
       "      <td>0.758208</td>\n",
       "      <td>0.972003</td>\n",
       "      <td>02:39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.107894</td>\n",
       "      <td>1.053602</td>\n",
       "      <td>0.787987</td>\n",
       "      <td>0.979130</td>\n",
       "      <td>02:44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.089639</td>\n",
       "      <td>1.057964</td>\n",
       "      <td>0.778315</td>\n",
       "      <td>0.976330</td>\n",
       "      <td>02:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.045804</td>\n",
       "      <td>1.002717</td>\n",
       "      <td>0.799949</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>02:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.991385</td>\n",
       "      <td>1.010937</td>\n",
       "      <td>0.808857</td>\n",
       "      <td>0.979130</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.962098</td>\n",
       "      <td>0.966381</td>\n",
       "      <td>0.823619</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.954809</td>\n",
       "      <td>0.964488</td>\n",
       "      <td>0.825401</td>\n",
       "      <td>0.977602</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.921110</td>\n",
       "      <td>0.910877</td>\n",
       "      <td>0.847798</td>\n",
       "      <td>0.983456</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.885910</td>\n",
       "      <td>0.922657</td>\n",
       "      <td>0.841181</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.857785</td>\n",
       "      <td>0.918295</td>\n",
       "      <td>0.842963</td>\n",
       "      <td>0.982693</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.835806</td>\n",
       "      <td>0.901465</td>\n",
       "      <td>0.841945</td>\n",
       "      <td>0.983202</td>\n",
       "      <td>02:43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.763846</td>\n",
       "      <td>0.853211</td>\n",
       "      <td>0.870705</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.721096</td>\n",
       "      <td>0.837180</td>\n",
       "      <td>0.877577</td>\n",
       "      <td>0.987020</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.675797</td>\n",
       "      <td>0.815011</td>\n",
       "      <td>0.888012</td>\n",
       "      <td>0.987274</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.649453</td>\n",
       "      <td>0.809384</td>\n",
       "      <td>0.887758</td>\n",
       "      <td>0.987020</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nA2vsYqmw5O15AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn.recorder.plot_metrics()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.886571</td>\n",
       "      <td>1.851933</td>\n",
       "      <td>0.393484</td>\n",
       "      <td>0.855434</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.626086</td>\n",
       "      <td>1.544907</td>\n",
       "      <td>0.556121</td>\n",
       "      <td>0.927208</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.469592</td>\n",
       "      <td>1.394684</td>\n",
       "      <td>0.616951</td>\n",
       "      <td>0.949096</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.331728</td>\n",
       "      <td>1.266217</td>\n",
       "      <td>0.693815</td>\n",
       "      <td>0.961568</td>\n",
       "      <td>02:42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.233829</td>\n",
       "      <td>1.176722</td>\n",
       "      <td>0.720794</td>\n",
       "      <td>0.971494</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.178948</td>\n",
       "      <td>1.112902</td>\n",
       "      <td>0.752354</td>\n",
       "      <td>0.973276</td>\n",
       "      <td>02:40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.124764</td>\n",
       "      <td>1.038498</td>\n",
       "      <td>0.798422</td>\n",
       "      <td>0.976330</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.097848</td>\n",
       "      <td>1.032473</td>\n",
       "      <td>0.788496</td>\n",
       "      <td>0.979130</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.045047</td>\n",
       "      <td>1.022534</td>\n",
       "      <td>0.791550</td>\n",
       "      <td>0.976584</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>1.011469</td>\n",
       "      <td>1.006893</td>\n",
       "      <td>0.801222</td>\n",
       "      <td>0.978621</td>\n",
       "      <td>02:40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.974580</td>\n",
       "      <td>0.988115</td>\n",
       "      <td>0.814966</td>\n",
       "      <td>0.980911</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.926908</td>\n",
       "      <td>0.977413</td>\n",
       "      <td>0.819801</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>02:41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.906151</td>\n",
       "      <td>0.952291</td>\n",
       "      <td>0.825401</td>\n",
       "      <td>0.984474</td>\n",
       "      <td>02:40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.904625</td>\n",
       "      <td>0.932020</td>\n",
       "      <td>0.838636</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>02:39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.872363</td>\n",
       "      <td>0.914896</td>\n",
       "      <td>0.841945</td>\n",
       "      <td>0.982184</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.820471</td>\n",
       "      <td>0.902089</td>\n",
       "      <td>0.846526</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.796968</td>\n",
       "      <td>0.881803</td>\n",
       "      <td>0.865106</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.718000</td>\n",
       "      <td>0.839181</td>\n",
       "      <td>0.874014</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.674643</td>\n",
       "      <td>0.817899</td>\n",
       "      <td>0.885976</td>\n",
       "      <td>0.985747</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.644771</td>\n",
       "      <td>0.813551</td>\n",
       "      <td>0.889285</td>\n",
       "      <td>0.986765</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data path   /root/.fastai/data/imagewoof2\n",
      "Learn path /root/.fastai/data/imagewoof2\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: left;\">\n",
       "      <th>epoch</th>\n",
       "      <th>train_loss</th>\n",
       "      <th>valid_loss</th>\n",
       "      <th>accuracy</th>\n",
       "      <th>top_k_accuracy</th>\n",
       "      <th>time</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>1.843195</td>\n",
       "      <td>1.679099</td>\n",
       "      <td>0.488419</td>\n",
       "      <td>0.897684</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.605277</td>\n",
       "      <td>1.505335</td>\n",
       "      <td>0.562993</td>\n",
       "      <td>0.939679</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.421124</td>\n",
       "      <td>1.325001</td>\n",
       "      <td>0.661746</td>\n",
       "      <td>0.953423</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.308289</td>\n",
       "      <td>1.241100</td>\n",
       "      <td>0.700687</td>\n",
       "      <td>0.961059</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>1.253989</td>\n",
       "      <td>1.144925</td>\n",
       "      <td>0.741919</td>\n",
       "      <td>0.968185</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>1.167163</td>\n",
       "      <td>1.132459</td>\n",
       "      <td>0.753627</td>\n",
       "      <td>0.972767</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>1.118368</td>\n",
       "      <td>1.127775</td>\n",
       "      <td>0.755918</td>\n",
       "      <td>0.967676</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>1.058586</td>\n",
       "      <td>1.027808</td>\n",
       "      <td>0.793077</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>1.036666</td>\n",
       "      <td>0.993009</td>\n",
       "      <td>0.812675</td>\n",
       "      <td>0.978112</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.999082</td>\n",
       "      <td>0.990989</td>\n",
       "      <td>0.806312</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>02:36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.962879</td>\n",
       "      <td>0.985795</td>\n",
       "      <td>0.812166</td>\n",
       "      <td>0.979893</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.924781</td>\n",
       "      <td>0.941321</td>\n",
       "      <td>0.833545</td>\n",
       "      <td>0.981166</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>12</td>\n",
       "      <td>0.914390</td>\n",
       "      <td>0.946122</td>\n",
       "      <td>0.831509</td>\n",
       "      <td>0.979639</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>13</td>\n",
       "      <td>0.888257</td>\n",
       "      <td>0.937622</td>\n",
       "      <td>0.842199</td>\n",
       "      <td>0.982438</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>14</td>\n",
       "      <td>0.857446</td>\n",
       "      <td>0.911190</td>\n",
       "      <td>0.841690</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>15</td>\n",
       "      <td>0.818396</td>\n",
       "      <td>0.890401</td>\n",
       "      <td>0.857470</td>\n",
       "      <td>0.981929</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>16</td>\n",
       "      <td>0.771615</td>\n",
       "      <td>0.884422</td>\n",
       "      <td>0.857979</td>\n",
       "      <td>0.984220</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>17</td>\n",
       "      <td>0.722390</td>\n",
       "      <td>0.834752</td>\n",
       "      <td>0.883176</td>\n",
       "      <td>0.985238</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>18</td>\n",
       "      <td>0.666592</td>\n",
       "      <td>0.823186</td>\n",
       "      <td>0.876813</td>\n",
       "      <td>0.983965</td>\n",
       "      <td>02:37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>19</td>\n",
       "      <td>0.649037</td>\n",
       "      <td>0.819641</td>\n",
       "      <td>0.881904</td>\n",
       "      <td>0.984729</td>\n",
       "      <td>02:38</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "learn = get_learn(model=model,size=size,bs=bs)\n",
    "learn.fit_fc(epochs, lr, moms,start_pct)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "learn.recorder.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "learn.recorder.plot_metrics()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# e20 results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = np.array([0.887503, 0.882667, 0.887758, 0.889285, 0.881904])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.8858233999999999, 0.002962126438894877)"
      ]
     },
     "execution_count": null,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.mean(), acc.std()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
